package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;

public class RegDemo {
    public static void main(String[] args) throws Exception {
        // 创建userinfo实例对象
        UserInfo userInfo= InputUtil.getInputObject(new UserInfo());
        System.out.println(userInfo);

        /*try{
            // 使用反射机制创建驱动对象
            Class.forName("com.mysql.cj.jdbc.Driver");
            String sqlUrl = "jdbc:mysql://localhost:3306/jdbc_study?useSSL=false&serverTimezone=UTC";
            String username = "root";
            String password = "root";

            // 创建连接对象
            Connection conn = DriverManager.getConnection(sqlUrl,username,password);


            // 笨办法插入数据
            // 创建sql语句，下面的笨办法，而且还有sql注入安全问题
            String sql = "INSERT INTO userinfo(username,password,nickname,age) " +
                     "VALUES('"+userInfo.getUsername()+"','"+ userInfo.getPassword()+
                     "','"+userInfo.getNickname()+"',"+userInfo.getAge()+")";

            System.out.println(sql);
            // 创建Statement对象
            Statement statement = conn.createStatement();
            // 将userinfo对象中的数据插入到数据库中
            int result = statement.executeUpdate(sql);
            if(result>0){
                System.out.println("注册成功");
            }else{
                System.out.println("注册失败");
            }

            // 使用占位符进行插入数据，避免sql注入
            String sql = "insert into userinfo(username,password,nickname,age)" +
                    " values(?,?,?,?)";
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setString(1,userinfo.getUsername());
            preparedStatement.setString(2,userinfo.getPassword());
            preparedStatement.setString(3,userinfo.getNickname());
            preparedStatement.setInt(4,userinfo.getAge());
            int result = preparedStatement.executeUpdate();
            if(result>0){
                System.out.println("注册成功");
            }else{
                System.out.println("注册失败");
            }


        }catch (Exception e){
            System.out.println("注册失败"+e.getMessage());
        }*/
        Connection conn = DBUtil.getConnection();

        // 创建sql语句，下面的笨办法，而且还有sql注入安全问题
        String sql = "INSERT INTO userinfo(username,password,nickname,age) " +
                "VALUES('"+userInfo.getUsername()+"','"+ userInfo.getPassword()+
                "','"+userInfo.getNickname()+"',"+userInfo.getAge()+")";

        System.out.println(sql);
        // 创建Statement对象
        Statement statement = conn.createStatement();
        // 将userinfo对象中的数据插入到数据库中
        int result = statement.executeUpdate(sql);
        if(result>0){
            System.out.println("注册成功");
        }else{
            System.out.println("注册失败");
        }

    }
}
